package com.tedu.shoot;

import com.tedu.shoot.img.Images;
import sun.applet.Main;

import java.awt.image.BufferedImage;

/**
 * Date：2021年08月
 * Author：程Sir
 * Content:
 *  英雄类：可以发射子弹
 */
public class Hero extends FlyingObject {
    @Override
    public String toString() {
        return "Hero{" +
                "life=" + life +
                ", fire=" + fire +
                ", wdith=" + wdith +
                ", height=" + height +
                ", x=" + x +
                ", y=" + y +
                '}';
    }

    private int life;//生命
    private int fire;// 火力

    public int getLife() { // 获取生命的方法
        return life;
    }

    public int getFire() { // 获取火力的方法
        return fire;
    }

    public Hero(){
//        this.wdith = 130;
//        this.height = 108;
//        this.x = 150;
//        this.y = 450;
        super(150,450,130,108);
        life = 3;
        fire = 1;

    }
    // 表示英雄图片的下标
    int index = 0;
    @Override
    public BufferedImage getImage() {
        BufferedImage[] heros = Images.heroImage;
        // 英雄机两张图的切换，就是他下标的切换
        return heros[index++ % 2];
    }

    /**
     * 英雄射击子弹的方法
     * @return 返回射出的子弹数组【可能是单发，也可能是双发】
     */
    public Bullet[] nextBullet(){
        int xStep = this.wdith/4;
        if (fire > 0){
            Bullet[] bullets = new Bullet[2];
            bullets[0] = new Bullet(this.x+ 1*xStep ,this.y);
            bullets[1] = new Bullet(this.x+ 3*xStep,this.y);
            fire -=2 ;
            return  bullets;
        }else {
            Bullet[] bullets = new Bullet[1];
            bullets[0] = new Bullet(this.x+ 2*xStep,this.y);
//            fire -= 1; // 越来越小，某一时刻一定会为负数！！这样是不符合常理的，
            return bullets;
        }
    }


    @Override
    public void step() {

    }

    @Override
    public boolean isOutBound() {
        return false;
    }

    /**
     * 英雄机随着鼠标移动的方法
     * @param x 鼠标的x值
     * @param y 鼠标的y值
     */
    public void move(int x, int y) {
        // 英雄机的x = 鼠标的x - 二分之一的英雄宽
        this.x = x - this.wdith/2;
        // 英雄机的y = 鼠标y - 二分之一的英雄高
        this.y = y - this.height/2;
    }

    // 让英雄减命
    public void substractLife(){
        this.life--;
    }
    // 让英雄减单倍火力
    public void clearFire(){
        this.fire = 0;
    }

    // 让英雄加生命
    public void addLife(){
        this.life ++;
    }
    // 让英雄加火力
    public void addFire(){
        this.fire += 30;
    }





}
